#!/usr/bin/env python
# coding:utf-8

from hashlib import md5

import requests


class Chaojiying_Client(object):
    def __init__(self, username, password, soft_id):
        self.username = username
        password = password.encode("utf8")
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            "user": self.username,
            "pass2": self.password,
            "softid": self.soft_id,
        }
        self.headers = {
            "Connection": "Keep-Alive",
            "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)",
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            "codetype": codetype,
        }
        params.update(self.base_params)
        files = {"userfile": ("ccc.png", im)}
        r = requests.post(
            "http://upload.chaojiying.net/Upload/Processing.php",
            data=params,
            files=files,
            headers=self.headers,
        )
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            "id": im_id,
        }
        params.update(self.base_params)
        r = requests.post(
            "http://upload.chaojiying.net/Upload/ReportError.php",
            data=params,
            headers=self.headers,
        )
        return r.json()


def get_yanzhengma(file_path):
    chaojiying = Chaojiying_Client(
        "gdfshggg", "ttxd$@42", "962939"
    )  ### 替换为你超级鹰账号、密码和软件 ID
    im = open(
        file_path, "rb"
    ).read()  # 本地图片文件路径 来替换 yanzhengma.png 有时WIN系统须要//

    value = chaojiying.PostPic(im, 1902)
    yanzhengma = value.get("pic_str")
    print(f"验证码是：{yanzhengma}")
    return yanzhengma
